JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去… 及其浮点数计算精度问题(推荐的类库 Numeral.js 和 accounting.js)... | 您所在的位置:网站首页 › js 数字格式化 › JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去… 及其浮点数计算精度问题(推荐的类库 Numeral.js 和 accounting.js)... |
前端开发中经常会碰到用 JavaScript 格式化数字,最最常见的是格式化金额,一般格式化金额需要千分位分隔,保留2位小数等等。 还有偶然会遇到的使用 js 计算浮点数时出现误差。 完善的功能函数推荐文章(标题内容):http://www.css88.com/archives/7324#more-7324
JavaScript 浮点数计算精度问题简单解决 摘要: 由于计算机是用二进制来存储和处理数字,不能精确表示浮点数,而JavaScript中没有相应的封装类来处理浮点数运算,直接计算会导致运算精度丢失。 JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定。 console.log( 0.1 + 0.2 ); //0.30000000000000004方法一:使用 toFixed 进行四舍五入指定要保留的小数位数 console.log(( 0.1 + 0.2 ).toFixed(1)); // 0.3缺点:其实不精确,特别对于计算金额类的严谨问题不推荐使用,且不同浏览器对其计算结果存在差异。
方法二:把需要计算的数字升级(乘以10的n次幂)成计算机能够精确识别的整数,等计算完毕再降级(除以10的n次幂),这是大部分编程语言处理精度差异的通用方法。 console.log((0.1*10 + 0.2*10)/10); // 0.3额外:http://blog.csdn.net/u012143360/article/details/53148591 通过将浮点数转换成整数进行计算,然后再将整数的小数点位调整,转回正确的浮点数结果。 console.log(6.8-0.9); // 5.8999999999999995console.log(Math.round((6.8-0.9)*10)); // 59Math.formatFloat = function (f, digit) {var m = Math.pow(10, digit); return Math.round(f * m, 10) / m;};console.log(Math.formatFloat(6.8-0.9,2)); // 5.912年的前辈总结:http://blog.51cto.com/xzllff/83124113年自定义函数:https://www.cnblogs.com/wangkongming/archive/2013/01/18/2866788.html17年css88加减乘除函数:http://www.css88.com/archives/7340 |
CopyRight 2018-2019 实验室设备网 版权所有 |